package leetcode每日一题;

import java.util.HashSet;

/**
 * 1. 问题描述
 *      给定一个整数类型的数组 nums，请编写一个能够返回数组 “中心索引” 的方法。
 *
 * 我们是这样定义数组 中心索引 的：数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
 *
 * 如果数组不存在中心索引，那么我们应该返回 -1。如果数组有多个中心索引，那么我们应该返回最靠近左边的那一个。
 *
 * 2. 算法分析
 *      模拟法
 *
 * 3. 代码实现
 */
@SuppressWarnings("all")
public class 寻找数组的中心索引 {
    /**
     * 时间复杂度：O(n^2) 空间复杂度：O(1)
     * @param nums
     * @return
     */
    public int pivotIndex1(int[] nums) {
        int len = nums.length;
        if(len == 0) {return -1;}
        for(int i = 0; i < len; i++) {
            int j = i - 1;
            int k = i + 1;
            int left = 0;
            int right = 0;
            while(j >= 0) {
                left += nums[j];
                j--;
            }
            while(k < len) {
                right += nums[k];
                k++;
            }
            if(left == right) {
                return i;
            }
        }
        return -1;
    }

    // 时间复杂度O(n)
    // 考点：前缀和
    public int pivotIndex(int[] nums) {
        int len = nums.length;
        if(len == 0) {return -1;}
        int sum = 0;
        for(int i = 0; i < len; i++) {
            sum += nums[i];
        }
        int left = 0;
        for(int i = 0; i < len; i++) {
            if(left == sum - nums[i] - left) {
                return i;
            }
            left += nums[i];
        }
        return -1;
    }

    public static void main(String[] args) {
        StringBuilder a = new StringBuilder();
        a.append(1);
        a.append(2);
        System.out.println(a.deleteCharAt(1));
        HashSet set = new HashSet();
        for (int i = 0; i < set.size(); i++) {
            Object[] objects = set.toArray();
        }
    }
}
